---
title: 服务间通信
description: 这部分内容分为三个部分，服务治理、负载均衡、简化服务调用，Nacos、Loadbalance 和 OpenFeign 实现了跨服务的调用。
---
这部分主要解决微服务之间的通信,涉及到的关键技术是 Nacos 注册中心、Loadbalance 客户端负载均衡组件和 OpenFeign 服务间调用组件。

微服务之间的服务通信有一个前提条件，就是要知道将要调用的服务的地址。这个寻址的过程是由 Nacos 注册中心和 Loadbalance 负载均衡器共同来完成的。

Nacos 是 Alibaba 出品的服务治理组件，作为一个注册中心组件，负责收集所有服务节点的地址信息并维护服务注册表，所有服务上线之后都会向它汇报状态。Loadbalance 则承担了负载均衡的任务，在客户端发起服务调用的时候，它会负责从 Nacos 的注册表中挑选一台目标服务器。而 OpenFeign 组件是一个“锦上添花”的组件，它能够简化 HTTP 的远程调用，让我们像使用本地接口一样方便地发起远程服务调用。

1. 服务治理：通过 Nacos 的服务发现功能，通过 Webflux 组件重的 WebClient 实现基于 HTTP 的跨服务调用；
2. 负载均衡：在服务治理的基础上，引入 Loadbalance 组件为跨服务调用添加负载均衡的能力；对 Loadbalance 组件的扩展接口做自定义开发，实现一个金丝雀测试的负载均衡场景。
3. 简化服务调用： 使用 OpenFeign 组件对服务进行改造，将原本负载的 WebClient 调用替换为简洁的 OpenFeign 调用。

保障系统的高可用性有两个大道至简的方向。

* 避免单点故障：在做系统架构的时候，应该假设任何服务器都应该挂掉。如果某项任务依赖单一服务资源，那么这就会成为一个单点，一旦这个服务资源挂掉就表示整个服务功能变得不可用。
* 故障机器状态恢复： 尽快将故障机器恢复到状态前的状态。对于像 Nacos 这类中心化注册中心来说，因故障而下线的机器再重新上线后，应该有能力从某个地方获取故障发生器的服务注册列表。

Nacos 是通过构建服务集群解决上述两个问题的。集群环境不仅可以有效规避单点故障问题，同时对于故障恢复场景来说，重新上线的机器也可以从集群中的其它节点同步数据信息，恢复到故障前的状态。


import DocCardList from '@theme/DocCardList';


<DocCardList />
